package com.wonders.hisdoctor.station.project.base.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.wonders.his.common.utils.validator.group.InsertGroup;
import com.wonders.his.common.utils.validator.group.PrimaryGroup;
import java.util.Date;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * <p>传染病报卡</p>
 * <p>db_table: INFEC_INFO</p>
 * @author zhaogongming
 * @date 2021/06/22
 */
@ApiModel("传染病报卡")
@Accessors(chain = true)
@Data
@ToString
@TableName("INFEC_INFO")
public class InfecInfo implements Serializable {

    private static final long serialVersionUID = -4075970115687559010L;

    /** `主键` db_field: INFEC_ID; desc: 传染病报卡ID */
    @ApiModelProperty("传染病报卡ID")
    @TableId
    @NotNull(message = "传染病报卡ID不能为空", groups = PrimaryGroup.class)
    @TableField("INFEC_ID")
    private String infecId;

    /** db_field: PATIENT_ID; desc: 病人标识号 */
    @ApiModelProperty("病人标识号")
    @NotBlank(message = "病人标识号不能为空", groups = InsertGroup.class)
    @TableField("PATIENT_ID")
    private String patientId;

    /** db_field: VISIT_DATE; desc: 就诊时间 */
    @ApiModelProperty("就诊时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @NotNull(message = "就诊时间不能为空", groups = InsertGroup.class)
    @TableField("VISIT_DATE")
    private Date visitDate;

    /** db_field: VISIT_NO; desc: 就诊序号 */
    @ApiModelProperty("就诊序号")
    @NotNull(message = "就诊序号不能为空", groups = InsertGroup.class)
    @TableField("VISIT_NO")
    private Integer visitNo;

    /** db_field: INFEC_TYPE; desc: 报卡类别 */
    @ApiModelProperty("报卡类别")
    @NotNull(message = "报卡类别不能为空", groups = InsertGroup.class)
    @TableField("INFEC_TYPE")
    private String infecType;

    /** db_field: IDCARD_NO; desc: 医疗卡帐号 */
    @ApiModelProperty("医疗卡帐号")
    @TableField("IDCARD_NO")
    private String idcardNo;

    /** db_field: NAME; desc: 姓名：病人姓名 */
    @ApiModelProperty("姓名：病人姓名")
    @TableField("NAME")
    private String name;

    /** db_field: SEX; desc: 性别：男、女、未知，本系统定义，见1.1性别字典 */
    @ApiModelProperty("性别：男、女、未知，本系统定义，见1.1性别字典")
    @TableField("SEX")
    private String sex;

    /** db_field: DATE_OF_BIRTH; desc: 出生日期 */
    @ApiModelProperty("出生日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField("DATE_OF_BIRTH")
    private Date dateOfBirth;

    /** db_field: AGE; desc: 年龄 */
    @ApiModelProperty("年龄")
    @TableField("AGE")
    private String age;

    /** db_field: PERSONNEL_RANK; desc: 人员职别 */
    @ApiModelProperty("人员职别")
    @NotBlank(message = "人员职别不能为空", groups = InsertGroup.class)
    @TableField("PERSONNEL_RANK")
    private String personnelRank;

    /** db_field: SPECIAL_OCCUPATION; desc: 特殊职业 */
    @ApiModelProperty("特殊职业")
    @TableField("SPECIAL_OCCUPATION")
    private String specialOccupation;

    /** db_field: ENROL_PROVINCE; desc: 入伍省 */
    @ApiModelProperty("入伍省")
    @TableField("ENROL_PROVINCE")
    private String enrolProvince;

    /** db_field: ENROL_CITY; desc: 入伍市 */
    @ApiModelProperty("入伍市")
    @TableField("ENROL_CITY")
    private String enrolCity;

    /** db_field: ENROL_AREA; desc: 入伍区 */
    @ApiModelProperty("入伍区")
    @TableField("ENROL_AREA")
    private String enrolArea;

    /** db_field: ENROL_DATE; desc: 入伍年月 */
    @ApiModelProperty("入伍年月")
    @DateTimeFormat(pattern = "yyyy-MM")
    @JsonFormat(pattern = "yyyy-MM")
    @TableField("ENROL_DATE")
    private String enrolDate;

    /** db_field: PAT_UNIT_JQ; desc: 所属单位_军区 */
    @ApiModelProperty("所属单位_军区")
    @TableField("PAT_UNIT_JQ")
    private String patUnitJq;

    /** db_field: PAT_UNIT_J; desc: 所属单位_军 */
    @ApiModelProperty("所属单位_军")
    @TableField("PAT_UNIT_J")
    private String patUnitJ;

    /** db_field: PAT_UNIT_SL; desc: 所属单位_师(旅) */
    @ApiModelProperty("所属单位_师(旅)")
    @TableField("PAT_UNIT_SL")
    private String patUnitSl;

    /** db_field: PAT_UNIT_T; desc: 所属单位_团 */
    @ApiModelProperty("所属单位_团")
    @TableField("PAT_UNIT_T")
    private String patUnitT;

    /** db_field: PAT_UNIT_BD; desc: 所属单位_部队 */
    @ApiModelProperty("所属单位_部队")
    @TableField("PAT_UNIT_BD")
    private String patUnitBd;

    /** db_field: PAT_UNIT_TELEPHONE; desc: 单位联系电话 */
    @ApiModelProperty("单位联系电话")
    @TableField("PAT_UNIT_TELEPHONE")
    private String patUnitTelephone;

    /** db_field: UNIT_PROVINCE; desc: 单位省 */
    @ApiModelProperty("单位省")
    @NotBlank(message = "单位地址省不能为空", groups = InsertGroup.class)
    @TableField("UNIT_PROVINCE")
    private String unitProvince;

    /** db_field: UNIT_CITY; desc: 单位市 */
    @ApiModelProperty("单位市")
    @NotBlank(message = "单位地址市不能为空", groups = InsertGroup.class)
    @TableField("UNIT_CITY")
    private String unitCity;

    /** db_field: UNIT_AREA; desc: 单位区 */
    @ApiModelProperty("单位区")
    @NotBlank(message = "单位地址区不能为空", groups = InsertGroup.class)
    @TableField("UNIT_AREA")
    private String unitArea;

    /** db_field: UNIT_TYPE_CODE; desc: 单位性质代码：对应表UNIT_TYPE_DICT */
    @ApiModelProperty("单位性质代码：对应表UNIT_TYPE_DICT")
    @TableField("UNIT_TYPE_CODE")
    private String unitTypeCode;

    /** db_field: TOP_UNIT_CODE; desc: 大单位代码：对应表TOP_UNIT_DICT大单位 */
    @ApiModelProperty("大单位代码：对应表TOP_UNIT_DICT大单位")
    @NotBlank(message = "隶属大单位不能为空", groups = InsertGroup.class)
    @TableField("TOP_UNIT_CODE")
    private String topUnitCode;

    /** db_field: CASE_CLASS1; desc: 病例分类1 */
    @ApiModelProperty("病例分类1")
    @NotBlank(message = "病例分类1不能为空", groups = InsertGroup.class)
    @TableField("CASE_CLASS1")
    private String caseClass1;

    /** db_field: CASE_CLASS2; desc: 病例分类2 */
    @ApiModelProperty("病例分类2")
    @TableField("CASE_CLASS2")
    private String caseClass2;

    /** db_field: ATTACK_DATE; desc: 发病日期:病原携带者填初检日期或就诊时间 */
    @ApiModelProperty("发病日期:病原携带者填初检日期或就诊时间")
    @NotNull(message = "发病日期不能为空", groups = InsertGroup.class)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField("ATTACK_DATE")
    private Date attackDate;

    /** db_field: DIAGNOSIS_DATE; desc: 诊断日期 */
    @ApiModelProperty("诊断日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField("DIAGNOSIS_DATE")
    private Date diagnosisDate;

    /** db_field: DEATH_DATE; desc: 死亡日期 */
    @ApiModelProperty("死亡日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField("DEATH_DATE")
    private Date deathDate;

    /** db_field: INFECTED_AREA; desc: 感染地方 */
    @ApiModelProperty("感染地方")
    @TableField("INFECTED_AREA")
    private String infectedArea;

    /** db_field: INFECTED_AREA_OTHER; desc: 感染地方其他 */
    @ApiModelProperty("感染地方其他")
    @TableField("INFECTED_AREA_OTHER")
    private String infectedAreaOther;

    /** db_field: OTHER; desc: 其他 */
    @ApiModelProperty("其他")
    @TableField("OTHER")
    private String other;

    /** db_field: INP_DATE; desc: 入院日期 */
    @ApiModelProperty("入院日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH")
    @JsonFormat(pattern = "yyyy-MM-dd HH")
    @TableField("INP_DATE")
    private Date inpDate;

    /** db_field: OUT_DATE; desc: 出院日期 */
    @ApiModelProperty("出院日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField("OUT_DATE")
    private Date outDate;

    /** db_field: REVISION_DRG; desc: 订正病种 */
    @ApiModelProperty("订正病种")
    @TableField("REVISION_DRG")
    private String revisionDrg;

    /** db_field: REVISION_DATE; desc: 订正日期 */
    @ApiModelProperty("订正日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField("REVISION_DATE")
    private Date revisionDate;

    /** db_field: INFEC_A; desc: 甲类传染病 */
    @ApiModelProperty("甲类传染病")
    @TableField("INFEC_A")
    private String infecA;

    /** db_field: INFEC_B; desc: 乙类传染病 */
    @ApiModelProperty("乙类传染病")
    @TableField("INFEC_B")
    private String infecB;

    /** db_field: INFEC_C; desc: 丙类传染病 */
    @ApiModelProperty("丙类传染病")
    @TableField("INFEC_C")
    private String infecC;

    /** db_field: INFEC_O; desc: 其他类传染病 */
    @ApiModelProperty("其他类传染病")
    @TableField("INFEC_O")
    private String infecO;

    /** db_field: INFEC_O_OTHER; desc: 其他类传染病_其他 */
    @ApiModelProperty("其他类传染病_其他")
    @TableField("INFEC_O_OTHER")
    private String infecOOther;

    /** db_field: REPORT_UNIT_TYPE; desc: 报告单位类型 */
    @ApiModelProperty("报告单位类型")
    @TableField("REPORT_UNIT_TYPE")
    private String reportUnitType;

    /** db_field: REPORT_UNIT; desc: 报告单位 */
    @ApiModelProperty("报告单位")
    @NotBlank(message = "报告单位不能为空", groups = InsertGroup.class)
    @TableField("REPORT_UNIT")
    private String reportUnit;

    /** db_field: REPORT_UNIT_OTHER; desc: 报告单位其他 */
    @ApiModelProperty("报告单位其他")
    @TableField("REPORT_UNIT_OTHER")
    private String reportUnitOther;

    /** db_field: REPORT_TYPE; desc: 报告类型:1 门诊报告 2 住院报告 */
    @ApiModelProperty("报告类型:1 门诊报告 2 住院报告")
    @NotBlank(message = "报告类型不能为空", groups = InsertGroup.class)
    @TableField("REPORT_TYPE")
    private String reportType;

    /** db_field: REPORT_ID; desc: 报告人ID */
    @ApiModelProperty("报告人ID")
    @TableField("REPORT_ID")
    private String reportId;

    /** db_field: REPORT_NAME; desc: 报告人名称 */
    @ApiModelProperty("报告人名称")
    @TableField("REPORT_NAME")
    private String reportName;

    /** db_field: REPORT_TELEPHONE; desc: 报告人所在科室联系电话 */
    @ApiModelProperty("报告人所在科室联系电话")
    @TableField("REPORT_TELEPHONE")
    private String reportTelephone;

    /** db_field: REPORT_DATE; desc: 报告日期 */
    @ApiModelProperty("报告日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField("REPORT_DATE")
    private Date reportDate;

    /** db_field: MEMO; desc: 备注 */
    @ApiModelProperty("备注")
    @TableField("MEMO")
    private String memo;

    /** db_field: OPERTOR_ID; desc: 录入员 */
    @ApiModelProperty("录入员")
    @NotNull(message = "录入员不能为空", groups = InsertGroup.class)
    @TableField("OPERTOR_ID")
    private String opertorId;

    /** db_field: OPERTOR_NAME; desc: 录入员名称 */
    @ApiModelProperty("录入员名称")
    @NotNull(message = "录入员名称不能为空", groups = InsertGroup.class)
    @TableField("OPERTOR_NAME")
    private String opertorName;

    /** db_field: OPERTOR_DATE; desc: 录入时间 */
    @ApiModelProperty("录入时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField("OPERTOR_DATE")
    private Date opertorDate;

    /** db_field: REPORT_STATUS; desc: 报卡状态:0 默认  */
    @ApiModelProperty("报卡状态:0 默认 ")
    @TableField("REPORT_STATUS")
    private String reportStatus;

    /** db_field: HOSPITAL_CODE; desc: 机构代码 */
    @ApiModelProperty("机构代码")
    @NotBlank(message = "机构代码不能为空", groups = InsertGroup.class)
    @TableField("HOSPITAL_CODE")
    private String hospitalCode;

}